1. Technical Field of the Invention
The present invention relates generally to programming firmware, and particularly to an improved device and method for programming hardware circuitry.
2. Background and Objects of the Invention
Conventional firmware architecture includes a programmable hardware device and a device driver corresponding thereto. The conventional programmable hardware device may include at least one function block and circuitry for programming and/or controlling the function block. A function block comprises circuitry which performs a certain (and oftentimes standard) function. For example, a function block may comprise a first-in, first-out memory (FIFO), a direct memory access (DMA) controller, a transmitter or a receiver. A number of function blocks may be combined to form higher-level devices such as a universal asynchronous receiver-transmitter (UART) or a high-level data link control (HDLC) device. The programmable hardware device typically includes suitable input-output (I/O) bussing for controlling the operation thereof.
The device driver for conventional firmware architecture contains code which is based upon the specific hardware device with which the device driver is associated. The hardware dependent code presents firmware developers with a daunting task in programming a hardware device to perform in a specific application.
First, the hardware developer must be thoroughly familiar with the hardware device and its operation in order to control it properly. Because conventional programmable hardware devices may be quite complex, a considerable period of time is typically required before the firmware developer is sufficiently familiar with the device.
Additionally, in order to program and/or control a conventional programmable hardware device to perform a single operation, the hardware device typically must be programmed to execute a number of individual sub-operations or steps. These sub-operational steps typically must be performed in an exact sequence in order for the hardware device to function properly. As a result, the programming of a programmable hardware device is often a tedious and time consuming process.
Another shortcoming in programming conventional programmable hardware devices is that of portability. The hardware specific code for one hardware device cannot be utilized in operating a different hardware device. Consequently, the above-described learning and programming processes must be repeated whenever the programmable hardware device is changed. Accordingly, there is a need for a device for simplifying the programming of programmable hardware devices.
It is an object of the present invention to provide a programmable hardware device having a simplified command set.
Another object of the present invention is to provide such a device which substantially shortens the programming cycle therefor.
It is another object of the present invention to provide a programmable hardware device which is configurable to accept both conventional and simplified methods for programming the hardware device.